using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GetMaterialParm : MonoBehaviour
{
    void Start()
    {
        //Mesh Filter 和 Skin Mesh Renderer 都继承自Render
        Renderer renderer = GetComponent<Renderer>();
        if (renderer != null)
        {
            //主材质
            Material rendererMaterial1 = renderer.material;
            Material rendererMaterial2 = renderer.sharedMaterial;
            
            //多材质获取
            Material[] rendererMaterials1 = renderer.materials;
            Material[] rendererMaterials2 = renderer.sharedMaterials;
            
            //修改颜色
            rendererMaterial1.color = Color.cyan;
            //修改材质
            rendererMaterial1.mainTexture = default;
            //修改材质球使用的Shader
            rendererMaterial1.shader = Shader.Find("Unlit/wxy_transparent开启深度写入");

            //修改渲染队列
            rendererMaterial1.renderQueue = 2000;
            // rendererMaterial1.set

            //materials和sharedMaterials的区别
            //material:
            //material属性会返回对象的实例化材质，相当于他会为对象创建一个该材质的独立副本
            //当你通过material属性修改材质时，这些更改只会影响这个特定对象，而不会影响相同材质的其他对象
            //使用material会增加内存消耗，因为每个对象都有自己独立的材质副本，但是可以单独修改单个对象


            //sharedMaterials:
            //sharedMaterials属性会返回对象的共享材质，相当于他返回的是所有使用这个材质的对象共享的同一个材质实例
            //当你通过sharedMaterials属性修改材质时，这些更改会应用到所有使用这个材质的对象上
            //使用sharedMaterials不会增加内存消耗，但是会批量修改所有使用该材质的对象
        }
        
    }
    
}
